//#include "timer.h"
//#include "ui.h"
//#include "umath.h"
//#include "sys.h"
//// #include "debug.h"
//// #include "sd.h"
//// #include "fat32.h"
//#include "uart.h"
//#include "temp_controller.h"
//#include "dwin8283.h"
//#include "wifi_wb23.h"
//#include "mcu_api.h"
//#include "modbus.h"
//#include "DHT8305.h"
//#include "vcnl4000.h"
//#include "IR.h"
//#include "rtc.h"

//// 记得关调试日志
//#define OS_VER "1.5.0.240801_R"

//// 测试
//extern u16 roomTemp;
//extern UpRtInfo upinfo;
//u16 TempSize = 100;
//extern unsigned char wifiMACFlag;

//const u16 code TabNTC_10k[100] = {
//    32116, 30601, 29128, 27732, 26408, 25152, 23962, 22833, 21762, 20746, 19783, 18868, 18000, 17177, 16395, 15652, 14947, 14277, 13641, 13036,
//    12461, 11915, 11395, 10901, 10431, 10000, 9557, 9151, 8765, 8397, 8047, 7712, 7394, 7090, 6800, 6523, 6259, 6008, 5767, 5537,
//    5318, 5108, 4907, 4716, 4532, 4357, 4189, 4029, 3875, 3728, 3588, 3453, 3324, 3200, 3081, 2968, 2859, 2754, 2654, 2558,
//    2466, 2377, 2293, 2211, 2133, 2058, 1986, 1917, 1850, 1786, 1725, 1666, 1610, 1555, 1503, 1452, 1404, 1358, 1313, 1270,
//    1228, 1189, 1150, 1113, 1078, 1044, 1011, 979, 948, 919, 890, 863, 837, 811, 787, 763, 740, 718, 697, 676};
//// ADC数值暂存
//u16 adc_val[8] = {0};
//// adc采样值
//u16 adc_value[3] = {0};

//// 电阻值
//u16 R1_value = 0; // ADC7处NTC电阻
//u16 R2_value = 0; // ADC0处NTC电阻
//// 温度值
//u16 R1_Temperature = 0;
//u16 R2_Temperature = 0;
//// 温度值  由adc采用计算的处
//u16 Temperature_Real = 0;
//u16 Temperatrue_Real_Old = 0;

//void Get_ADC_Value(void)
//{
//    static u16 temp[8] = {0};
//    read_dgus_vp(AD_VALUE, (u8*)temp, 8);
//    adc_val[0] += temp[0];
//    adc_val[6] += temp[6];
//    adc_val[7] += temp[7];
//}

//void Get_R_Value(u16 n)
//{
//    float R1_temp = 0.0, R2_temp = 0.0;
//    adc_value[0] = adc_val[0] / n;
//    adc_value[6] = adc_val[6] / n;
//    adc_value[7] = adc_val[7] / n;
//    R1_temp = adc_value[7] * 1.0 / (4095 - adc_value[7]); // ad7
//    R2_temp = adc_value[6] * 1.0 / (4095 - adc_value[6]); // ad6
//    R1_value = R1_temp * 10000;
//    R2_value = R2_temp * 10000;
//}

///*****************************************************************************
// 函 数 名  : u8 FindTab(u16 *pTab,u8 Tablong,u16 dat)
// 功能描述  : 二分法查表发，得到温度值，表格数据大到小
// 输入参数  :	 pTab：查表指针地址		Tablong：查表长度   dat：查表的数据
// 输出参数  : 返回查表的温度值
//*****************************************************************************/
//u8 FindTab(u16* pTab, u8 Tablong, u16 dat)
//{
//    u8 st = 0, ed = 0, m = 0;
//    u8 i = 0;
//    ed = TempSize - 1;
//    if (dat >= pTab[st])
//        return st;
//    else if (dat <= pTab[ed])
//        return ed;
//    while (st < ed)
//    {
//        m = (st + ed) / 2;
//        if (dat == pTab[m])
//            break;
//        if ((dat < pTab[m]) && (dat > pTab[m + 1]))
//            break;
//        if (dat > pTab[m])
//            ed = m;
//        else
//            st = m;
//        if (i++ > Tablong)
//            break;
//    }
//    if (st > ed)
//        return 0;
//    return m;
//}

///*****************************************************************************
// 函 数 名  : void Get_Temperature(void)
// 功能描述  : 得到温度值，经过得到AD值计算得到温度值，采用通过10次采样求平均值来计算温度
// 输入参数  :	tim: 时间 n:采样次数
// 输出参数  :
//*****************************************************/
//void Get_Temperature(u16 n)
//{
//    static u16 i = 0, temp_t = 0;
//    float temp1 = 0, temp2 = 0;
//    // if (AD_Count > tim)
//    // {
//    Get_ADC_Value();
//    i++;
//    if (i >= n)
//    {
//        // if (temp_count < 1000)
//        // {
//        //     temp_count++;
//        // }
//        Get_R_Value(n);
//        R1_Temperature = FindTab(TabNTC_10k, TempSize, R1_value);
//        R2_Temperature = FindTab(TabNTC_10k, TempSize, R2_value);
//        temp1 = (TabNTC_10k[R1_Temperature] - R1_value) * 1.0 / (TabNTC_10k[R1_Temperature] - TabNTC_10k[R1_Temperature + 1]);
//        temp2 = (TabNTC_10k[R2_Temperature] - R2_value) * 1.0 / (TabNTC_10k[R2_Temperature] - TabNTC_10k[R2_Temperature + 1]);
//        R1_Temperature = R1_Temperature * 10 + temp1 * 10;
//        R2_Temperature = R2_Temperature * 10 + temp2 * 10;
//        write_dgus_vp(0xB000, (u8*)&R1_Temperature, 1);
//        write_dgus_vp(0xB001, (u8*)&R2_Temperature, 1);

//        // Temp_Timer = 3000;
//        read_dgus_vp(0x3e, (u8*)&Temperature_Real, 1);
//        // Temperature_Real = Temperature_Real; // NOTE
//        write_dgus_vp(0XB002, (u8*)&Temperature_Real, 1);

//        memset(adc_val, 0, sizeof(adc_val));
//        i = 0;
//    }
//    // AD_Count = 0;
//    // }
//}

//void wifi_init()
//{
//    wifiMACFlag = 0;
//    UartInit(UART2, 115200);

//    wifi_protocol_init();

//    write_dgus_vp(0x0487, "2.5.6\0\0", 4);
//}

//void QR_Code()
//{
//    u8 QR_Code_450[96];
//    static u8 QR_Code_updata_flag = 0;
//    read_dgus_vp(0x450, (u8*)QR_Code_450, 48);
//    if (!QR_Code_updata_flag && strlen(QR_Code_450))
//    {
//        u8 mac_id[32];
//        // http://downloadapp.dwinhmi.com.cn/down?m=
//        strcpy(mac_id, QR_Code_450 + 41);
//        sprintf(QR_Code_450, "https://thermostat.api.dwinhmi.com.cn/home?m=%s", mac_id);
//        write_dgus_vp(0x450, (u8*)QR_Code_450, 48);
//        QR_Code_updata_flag = 1;
//    }
//}

//void my_point(void) // 0004 0001 0062 0060 0066 0066 F800 FF00
//{
//    u8 my_poit[] = {0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0xFF, 0x00};
//    u8 my_page_temp[2] = {0}; // 存放页面
//    u8 my_TP_STATUS[6] = {0}; // 触摸屏状态
//    u8 my_X_Y[4] = {0};       // 存放XY坐标值
//    u16 poit_X_Y_tmp = 0;
//    read_dgus_vp(PIC_NOW, my_page_temp, 2);
//    if (my_page_temp[1] == 80)
//    {
//        read_dgus_vp(TP_STATUS, my_TP_STATUS, 6);
//        if (my_TP_STATUS[0] == 0x5A)
//        {
//            my_poit[4] = my_TP_STATUS[2]; // X 坐标
//            my_poit[5] = my_TP_STATUS[3];

//            my_poit[6] = my_TP_STATUS[4]; // Y 坐标
//            my_poit[7] = my_TP_STATUS[5];

//            poit_X_Y_tmp = (((u16)my_TP_STATUS[2] << 8) | my_TP_STATUS[3]) + 3;
//            my_poit[8] = (u8)(poit_X_Y_tmp >> 8);
//            my_poit[9] = (u8)poit_X_Y_tmp;

//            poit_X_Y_tmp = (((u16)my_TP_STATUS[4] << 8) | my_TP_STATUS[5]) + 3;
//            my_poit[10] = (u8)(poit_X_Y_tmp >> 8);
//            my_poit[11] = (u8)poit_X_Y_tmp;

//            my_TP_STATUS[0] = 0;
//            my_TP_STATUS[1] = 0;
//            write_dgus_vp(TP_STATUS, my_TP_STATUS, 2);
//            write_dgus_vp(0xF000, my_poit, sizeof(my_poit));
//        }
//    }
//}

//// 打印编译日期
//void printVerInfo(void)
//{
//    u8 osInfo[64];
//    sprintf(osInfo, "OSVer: %s\xff\xff\n ", OS_VER);
//    write_dgus_vp(0x1300, osInfo, 32);
//}
//void main2()
//{

//    // SetPinOut(2, 0);
//    // PinOutput(2, 0, 1);
//    T0_Init();
//    T1_Init();

//    IR_READ_PORT_IN();
//    developer_params_load();
//    developer_params_init();
//    sys_params_load();
//    sys_params_init();
//    init_rtc();
//    // developer_params.Wifi_type = 1;
//    UpInfo_Chk(UPINFO_INIT);
//    UpInfo_Chk(UPINFO_FLUSH);
//    if (!developer_params.Wifi_type)
//    {
//        Pro8283Init();
//    }
//    else
//    {
//        StartTimer(7, 2000);
//        wifi_init();
//    }
//    EA = 1;
//    StartTimer(3, 1000);
//    StartTimer(4, 2000);
//    StartTimer(5, 100);
//    UartInit(UART5, 9600);
//    StartTimer(0, 1000);
//    // StartTimer(2, 60000);
//    DHT8305_I2C_Initial();
//    VCNL4200_Init();
//    printVerInfo();
//    while (1)
//    {
//        my_point();
//        modbusTreat();
//        get_var_change_flag();
//        sysParamsSave_Update();

//        TimingFunc_Update();
//        if (IR_ACCEPT_DONE_FLAG == 1)
//        {
//            write_dgus_vp(0xB012, (u8*)IR_data, 3);
//            IR_ACCEPT_DONE_FLAG = 0;

//            if (IR_data[2] == 0x7B && IR_data[4] == 0xE0)
//            {
//                wkq_switch = 0;
//                write_dgus_vp(0x1028, (u8*)&wkq_switch, 1);
//                switch_on_off();
//            }
//            else
//            {
//                u16 wind, mode, temp;
//                wkq_switch = 1;
//                write_dgus_vp(0x1028, (u8*)&wkq_switch, 1);
//                switch_on_off();
//                wind = (IR_data[2] >> 5) & 0x7; // 风速
//                mode = (IR_data[4] >> 2) & 0x3; // 模式
//                temp = (IR_data[4] >> 4) & 0xf; // 温度
//                switch (wind)
//                {
//                    case 0x5:
//                        sys_params.fan_speed = 4;
//                        break;

//                    case 0x4:
//                        sys_params.fan_speed = 1;
//                        break;

//                    case 0x2:
//                        sys_params.fan_speed = 2;
//                        break;
//                    case 0x1:
//                        sys_params.fan_speed = 3;
//                        break;

//                    default:
//                        break;
//                }
//                write_dgus_vp(0x1330, (u8*)&sys_params.fan_speed, 1);
//                write_dgus_vp(0x1030, (u8*)&sys_params.fan_speed, 1);

//                switch (mode)
//                {
//                    case 0: // 制冷
//                        mock_var.touch = 0x2060;
//                        break;
//                    case 1:
//                        if (temp == 0xE) // 送风
//                            mock_var.touch = 0x2064;
//                        else // 除湿
//                            mock_var.touch = 0x2062;
//                        break;

//                    case 3: // 制热
//                        mock_var.touch = 0x2061;
//                        break;
//                    default:
//                        break;
//                }
//                mock_varchg(&mock_var);
//                switch (temp)
//                {
//                    case 0X0:
//                    {
//                        mock_var.temp = 17;
//                        break;
//                    }
//                    case 0X1:
//                    {
//                        mock_var.temp = 18;
//                        break;
//                    }
//                    case 0X3:
//                    {
//                        mock_var.temp = 19;
//                        break;
//                    }
//                    case 0X2:
//                    {
//                        mock_var.temp = 20;
//                        break;
//                    }
//                    case 0X6:
//                    {
//                        mock_var.temp = 21;
//                        break;
//                    }
//                    case 0X7:
//                    {
//                        mock_var.temp = 22;
//                        break;
//                    }
//                    case 0X5:
//                    {
//                        mock_var.temp = 23;
//                        break;
//                    }
//                    case 0X4:
//                    {
//                        mock_var.temp = 24;
//                        break;
//                    }
//                    case 12:
//                    {
//                        mock_var.temp = 25;
//                        break;
//                    }
//                    case 13:
//                    {
//                        mock_var.temp = 26;
//                        break;
//                    }
//                    case 9:
//                    {
//                        mock_var.temp = 27;
//                        break;
//                    }
//                    case 8:
//                    {
//                        mock_var.temp = 28;
//                        break;
//                    }
//                    case 10:
//                    {
//                        mock_var.temp = 29;
//                        break;
//                    }
//                    case 11:
//                    {
//                        mock_var.temp = 30;
//                        break;
//                    }
//                    default:
//                        break;
//                }
//                mock_var.touch = 0x1005;
//                mock_varchg(&mock_var);
//                sys_params_save();
//            }
//        }
//        if (!developer_params.Wifi_type)
//        {
//            Pro8283Deal();
//        }
//        devCtr();
//        if (GetTimeOutFlag(5))
//        {
//            static u8 t50 = 0;
//            StartTimer(5, 100);
//            screensaver();
//            t50 = (++t50) % 10; // 500ms定时
//            if (!t50)
//            {
//                rdtime();
//                sleepMode_updata();
//                UpInfo_Chk(UPINFO_FLUSH);
//            }
//            Get_Temperature(10);
//        }
//        if (developer_params.Wifi_type)
//        {
//            wifi_uart_service();
//            Wifi_PairState_Update();
//            if (GetTimeOutFlag(7))
//            {
//                // mcu_get_signal_strength();
//                if (!wifiMACFlag)
//                {
//                    mcu_get_module_mac();
//                    // {
//                    //     u16 tmp;
//                    //     tmp = 66;
//                    //     write_dgus_vp(0x9902, (u8 *)&tmp, 1);
//                    // }
//                    StartTimer(7, 2000);
//                }
//                else
//                {
//                    KillTimer(7);
//                }
//            }
//        }
//        if (GetTimeOutFlag(4))
//        {
//            static u8 time = 0;
//            time++;
//            if (time == 135)
//            { // 90分钟内均匀增加20%湿度补偿
//                if (DHT8305_COMP < 20)
//                {
//                    DHT8305_COMP++;
//                }
//                time = 0;
//            }

//            get_roomTemp();
//            if (developer_params.Wifi_type)
//            {
//                mcu_dp_value_update(DPID_TEMP_CURRENT_F, (u32)roomTemp);
//                {
//                    static u8 i = 0;
//                    i++;
//                    if (i == 10)
//                    {
//                        all_data_update();
//                        i = 0;
//                    }
//                }
//            }
//            {
//                u8 a[2];
//                DHT8305_MeasurementResult(a);
//            }
//            QR_Code();
//            StartTimer(4, 2000);
//        }

//        if (GetTimeOutFlag(0))
//        {
//            u8 a[2] = {1, 1};
//            VCNL4200_MeasurementResult(a);
//            StartTimer(0, 500);
//        }

//        if (GetTimeOutFlag(6))
//        {
//            comboAttackCnt = 0;
//            KillTimer(6);
//        }
//    }
//}
